package lib;

import java.util.ArrayList;

public class EnsembleListe extends Ensemble{
	private ArrayList<Element> listElement;

	public EnsembleListe()
	{
		super();
		this.initAttributs();
	}
	
	private void initAttributs()
	{
		this.listElement = new ArrayList<Element>();
		super.setType("liste");
	}
	
	@Override
	public ArrayList<Element> getElements()
	{
		return this.listElement;
	}
	
	@Override
	public void retraitElement(Element el) {
		this.listElement.remove(el);
		this.setCardinal(this.getCardinal()-1);
	}

	@Override
	public void ajoutElement(Element el) {
		this.listElement.add(el);
		this.setCardinal(this.getCardinal()+1);
	}

	@Override
	public boolean testElement(Element el) {
		return this.listElement.contains(el);
	}

	@Override
	public int getCardinal() {
		return super.getCardinal();
	}

	@SuppressWarnings("unused")
	@Override
	public Ensemble intersection(Ensemble ensemble) {
		EnsembleListe tmpEnsemble = new EnsembleListe();
		
		for(Element e1 : this.listElement)
		{
			for(Element e2 : (ArrayList <Element>)ensemble.getElements())
			{
				if(e1.getValeur()==e2.getValeur())
				{
					tmpEnsemble.ajoutElement(e1);
				}
			}
		}
		
	
		if(tmpEnsemble==null)
		{
			tmpEnsemble = (EnsembleListe)EnsembleListe.VIDE;
		}
		
		return tmpEnsemble;
	}

	@Override
	public Ensemble complementaire(Ensemble ensemble) {
		Ensemble tmpEnsemble = new EnsembleListePerso();
		tmpEnsemble.setElements(this.getElements());
		
		for(Element e: (ArrayList <Element>)this.intersection(ensemble).getElements())
		{
			tmpEnsemble.retraitElement(e);
		}
		
		return tmpEnsemble;
	}
	@Override
	public void afficheEnsemble() {
		for(Element e : this.listElement)
		{
			System.out.println(e.getValeur());
		}
	}
}
